package com.jt.controller;


import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 历史：后端进行页面跳转时，一般使用Controller注解
 * 当下：前后端分离，页面不归后端管理，使用RestController
 * @RestController = @Controller + @ResponseBody
 */
@RestController
//Spring指定配置文件加载，将数据加载到容器中
//注解规则：如果注解中只有一个属性，并且名称为value时，则属性名称可以省略，有多个属性则不能省略。
@PropertySource(value= "classpath:/user.properties",encoding="utf-8")
//@RequestMapping("//method/hello") 这代表通用的路径，单独的路径要写在某个方法上
public class HelloController {
    /**
     * 表达式：springel表达式，简称spel表达式
     * 语法： ${表达式内容}
     * 工作原理：
     * 容器：在内存中的一个存储大量数据的Map集合
     * 1.当SpringBoot程序启动时，首先加载application.yml的配置文件
     * 2.在程序加载key-value结构时，将数据保存到Map集合中（容器内部）
     * 3.利用Spel表达式，通过key，获取value，再为属性赋值。
     */
    @Value("${userinfo.name}")
    private String name;
    @Value("${user.info}")
    private String name2;

    /*该注解与方法绑定 */
    @RequestMapping("/hello")
    public String helloController(){

        return "欢迎使用SpringBoot："+name+"&&"+name2;
    }

    @RequestMapping("/getUser")
    public User getUser(){
        User user = new User();
        user.setId(110).setName("迪迦奥特曼");//链式加载
        user.setAge(20).setSex("男");
        return user;
    }
}
